<?php
if ((!(isset ($form_mode))) or ($form_mode==""))
   {$form_mode="new";}

function add_error ($str)
{global $error_i, $error;
 if ($str !="")
   {$error_i++;
    $error[$error_i]=$str;
   }
}

function add_info ($str)
{global $info_i, $info;
 $info_i++;
 $info[$info_i]=$str;
}

form_load ($form_name);
if (isset($form[body][form_i])) {$form_i=$form[body][form_i];}
if (isset($form[body][form_mode])) {$form_mode=$form[body][form_mode];}

if ($form_submit == "up") // -------------------- góra --------------------
{if (($pole = $form[order][area]) == false) {$pole="order";}
 $zap="SELECT $pole FROM ".$form[body][table]." WHERE ".$form[body][key]." LIKE '".$form_i1."'";
 if (!($wynik = @mysql_query($zap))) {/*echo(mysql_error($sql));*/}
 $kol=mysql_fetch_array($wynik);
 $i1=$kol[$pole];

 $zap="SELECT $pole FROM ".$form[body][table]." WHERE ".$form[body][key]." LIKE '".$form_i2."'";
 if (!($wynik = @mysql_query($zap))) {/*echo(mysql_error($sql));*/}
 $kol=mysql_fetch_array($wynik);
 $i2=$kol[$pole];

 $zap="UPDATE ".$form[body][table]." SET $pole = ".$i2." WHERE ".$form[body][key]." LIKE '".$form_i1."'";
 $wynik = @mysql_query($zap);
 $zap="UPDATE ".$form[body][table]." SET $pole = ".$i1." WHERE ".$form[body][key]." LIKE '".$form_i2."'";
 $wynik = @mysql_query($zap);
}
elseif ($back == "t")  // -------------------- cofnij --------------------
{if (isset($form[body][a_back])) {$a=$form[body][a_back];}
 if (isset($form[body][b_back])) {$b=$form[body][b_back];}
 if (isset($form[body][c_back])) {$c=$form[body][c_back];}
}
elseif (($form_submit != "submit") and ($form_mode != "new") and ($back == ""))// -------------- ładowanie danych do edycji/usunięcia --------------
{$zap="SELECT * FROM ".$form[body][table]." WHERE ".$form[body][key]." LIKE '".$form_i."'";
 $wynik = @mysql_query($zap);
 $row=@mysql_fetch_array($wynik);
 foreach ($form as $k => $i)
    {if (($pole = $i['area']) == false) {$pole=$k;}
     switch ($i[type])
          {case "text":
          	if($i[check]=="date")
		  		$row[$pole]==0?$$k="":$$k=date ('d-m-Y',$row[$pole]);
		  	else
		  		$$k=$row[$pole];
			break;
           case "checkbox": $$k=$row[$pole]; break;
           case "textarea": $$k=$row[$pole]; $$k=str_replace("<br />","\n",$$k); break;
           case "file": $k2=$k."_alt"; $$k2=$row[$pole]; break;
           case "select": $$k=$row[$pole]; break;
           case "radio": $$k=$row[$pole]; break;
          }
    }
}
elseif (($form_submit == "submit") and ($back == "")) // -------------------- sprawdzanie --------------------
{$error_i=0; $info_i=0;
 foreach ($form as $k => $i)
    {if ($form_mode == "del") {continue;}
     if ($k == "body") {continue;}

     if ($i[type] == "user_add")
       if ((!isset($user_dane[user_id])) or ($user_dane[user_id] == "") or ($user_dane[user_id] == "0"))
          add_error ("Nie możesz dodać tych danych nie będąc zalogowanym!");

     if (($i[notnull] == false) and ($$k == "") and ($i[type] != "file")) {continue;}
     if (($i[notnull] == false) and ($i[type] == "file") and (($_FILES['plik']['name'][$k] == "") or (!isset($_FILES['plik']['name'][$k])))) {continue;}
     if (($i[notnull] == true) and ($$k == "") and ($i[type] != "file")) {add_error ("Pole \"$i[des]\" nie może pozostać puste!");}     $k2=$k."_alt";
     if ($i[type] == "file")
        {$$k2=stripcslashes($$k2);
         $$k2=str_replace("\"","&quot;",$$k2);
         $$k2=str_replace("'","&apos;",$$k2);
         $send=true;
         list ($tmp_szer, $tmp_wys) = getimagesize($_FILES['plik']['tmp_name'][$k]);
         if ((isset ($i[width])) and ($tmp_szer > $i[width])) {add_error ("Przesyłany plik ($i[des]) jest zbyt szeroki!"); $send=false;}
         if ((isset ($i[height])) and ($tmp_wys > $i[height])) {add_error ("Przesyłany plik ($i[des]) jest zbyt wysoki!"); $send=false;}
         if ($_FILES['plik']['error'][$k]==1) {add_error ("Przesyłany plik ($i[des]) jest zbyt duży!");}
         if ($_FILES['plik']['error'][$k]==2) {add_error ("Przesyłany plik ($i[des]) jest zbyt duży!");}
         if ($_FILES['plik']['error'][$k]==3) {add_error ("Plik został przesłany częściowo, spróbuj ponownie!");}
         if (($_FILES['plik']['error'][$k]==4) and ($i[notnull] == true) and ($$k2=="")) {add_error ("Brak pliku ($i[des])!");}
         if ($_FILES['plik']['error'][$k]>4) {add_error ("Podczas przesyłania pliku ($i[des]) wystąpił błąd nr ".$_FILES['plik']['error'][$k]."!");}
         if ((isset ($i[ftype])) and ($_FILES['plik']['error'][$k]!=4))
           {$ft=explode ("/", $_FILES['plik']['type'][$k]);
            $ft=$ft[0];
            if ($i[ftype] != $ft) {add_error ("Niewłaściwy typ przesyłanego pliku ($i[des])!");}
           }
         if (($_FILES['plik']['error'][$k]==0) and ($i[ftype] == $ft) and ($send))
             {if ($i[annos-chname])
                  {$nazwa_plik=explode(".",$_FILES['plik']['name'][$k]);
                   $nazwa_plik[count($nazwa_plik)-2].=".".uniqid("").".".$i[fnum];
                   $nazwa_plik=implode(".",$nazwa_plik);
                  }
              else
                  {$nazwa_plik=$_FILES['plik']['name'][$k];}
              if (!@move_uploaded_file($_FILES['plik']['tmp_name'][$k],$i[dir].$nazwa_plik))
               {add_error ("Nie można zachować przesyłanego pliku ($i[des])!");}
              else
               {$$k2=$i[dir].$nazwa_plik;
                add_info ("Plik przesłany pomyślnie.");}
             }
        }
     if (($i[nospec] == "true") or ($i[type] == "new_pass"))
        {if (@stristr($$k, "/")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
         elseif (@stristr($$k, "\\")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
         elseif (@stristr($$k, "\"")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
         elseif (@stristr($$k, "'")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
         elseif (@stristr($$k, ">")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
         elseif (@stristr($$k, "<")) {add_error ("Nie używaj znaków \ / \" ' &gt &lt w polu \"$i[des]\"!"); $passch=true;}
        }
     $$k=stripcslashes($$k);
     $$k=html_off($$k);
     if (($i[type] == "new_pass") and ($passch==false) and ($$k != $$k2)) {add_error ("Źle powtórzone hasło!");}
     switch ($i[check])
     {case "len":
          if (strlen(trim($$k)) < $i[check_i]) {add_error ("W polu \"$i[des]\" musi być co najmniej $i[check_i] znaków!");}
      break;
      case "date":
          if ($$k=="") {break;}
          $date = explode ("-",$$k);
          if (strlen($date[2])!=4) {add_error ("Zły format daty w polu \"$i[des]\" (rok powinien być czterocyfrowy)!"); break;}
          if (count($date) != 3) {add_error ("Zły format daty w polu \"$i[des]\"!"); break;}
          if (checkdate(@intval ($date[1]),@intval ($date[0]),@intval ($date[2])) == false) {add_error ("Zła data w polu \"$i[des]\"!"); break;}
      break;
      case "int":

          if ($$k=="") {break;}
          if ($$k=="0")  {break;}
          if (!intval ($$k)) {add_error ("W polu \"$i[des]\" powinna być wpisana liczba!");}
      break;

     }
     if (($i[niepow] == true) and ($form_mode == "new"))
     {if (($pole = $i['area']) == false) {$pole=$k;}
      $zap="SELECT * FROM ".$form[body][table]." WHERE ".$pole." LIKE '".$$k."'";
      $wynik = @mysql_query($zap);
      $row=mysql_fetch_array($wynik);
      if ($row)
         {$i[des][0]=strtoupper($i[des][0]);
          add_error ("$i[des] '".$$k."' już istnieje!");}
     }

     if (($i[type] == "check_pass") and ($$k !=""))
     {$$k = md5($$k);
      $zap="SELECT * FROM ".$form[body][table].";";
      $wynik = @mysql_query($zap);
//       echo (mysql_error($sql));
      $row=mysql_fetch_array($wynik);
      if ($row['pass'] != $$k)
        {add_error ("Nieprawidłowe hasło!");}
     }

    }

 if ($error_i > 0)
   {$error = implode ("<br/>", $error);}
 else
   {$error = "";}

 if ($info_i > 0)
   {$info = implode ("<br/>", $info);
    $error.="<br/>$info";}

if ($error_i == 0) // -------------------- zapis --------------------
{
 $redag=$a;
 if (($form_name == "temat") or ($form_name == "post") or ($form_name == "posty_galeria"))
   $b_temp = $b;
 if ($form_name == "posty_sonda")
   $c_temp = $c;
 if ($c == "red_edit")
   {$a="redakcja";
   }
 else
   {if (isset($form[body][a])) {$a=$form[body][a];}
    if (isset($form[body][b])) {$b=$form[body][b];}
    if (isset($form[body][c])) {$c=$form[body][c];}
    if (isset($form[body][a_ref])) {$a_ref=$form[body][a_ref];}
    if (isset($form[body][b_ref])) {$b_ref=$form[body][b_ref];}
    if (isset($form[body][c_ref])) {$c_ref=$form[body][c_ref];}
    if (isset($form[body][ref])) {$refresh=$form[body][ref];}
   }
 $set="";
 foreach ($form as $k => $i)
    {if ($k == "body") {continue;}
     if (($pole = $i['area']) == false) {$pole=$k;}
     $war="''";
     $wpis="";
     switch ($i[type])
     {case "text": 
 		if($i[check]=="date")
	  	{
			if($$k=="")
				$war=0;
			else
			{
//				$date = explode ("-",$$k);
				$war=strtotime($$k);
			}
		}
	  	else
	  	{
	  		$war=$$k; $war="'".$war."'"; 
		}
	  break;
      case "textarea": 
	  	if ($i[notbr] != true) 
		  	$war=str_replace("\n","<br />",$$k);
		else 
			$war=$$k;
		$war="'".$war."'"; 
	  break;
      case "file": $k2=$k."_alt"; $war=$$k2; $war="'".$war."'"; break;
      case "new_pass":  if ($$k != "") {$war=md5($$k); $war="'".$war."'";} else {$wpis = "---";} break;
      case "user_add":  if ($form_mode == "new")  {$war="$user_dane[user_id]"; $war="'".$war."'";} else {$wpis = "---";} break;
      case "date_add":  if ($form_mode == "new")  {$war=strtotime(date ('l dS F Y h:i:s A'));} else {$wpis = "---";} break;
      case "user_edit": if ($form_mode == "edit") {$war="$user_dane[user_id]"; $war="'".$war."'";} else {$wpis = "---";} break;
      case "date_edit": if ($form_mode == "edit") {$war=strtotime(date ('l dS F Y h:i:s A'));} else {$wpis = "---";} break;
      case "order":
           if ($form_mode != "new") {$wpis = "---"; break;}
           if (($ind = $i['index']) == false) {$ind=$form[body][table]."_kol";}
           $zap="SELECT * FROM indeksy WHERE nazwa LIKE '".$ind."'";
           if (!($wynik = @mysql_query($zap))) {add_error(mysql_error($sql));}
           $kol=mysql_fetch_array($wynik);
           $war=$kol['wartosc'];
           $kol['wartosc']++;
           $zap="UPDATE indeksy SET wartosc = ".$kol['wartosc']." WHERE nazwa LIKE '".$ind."'";
           if (!($wynik = @mysql_query($zap))) {add_error(mysql_error($sql));}
           break;
      case "adres": $wpis="a='$a', b='$b', c='$c', form_name='$form_name'"; break;
      case "red": $war = red (); break;
      case "hidden": $war="'".$i[value]."'"; break;
      case "checkbox": if ($$k =="on") {$war="true";} else {$war="false";} $war="'".$war."'"; break;
      case "radio": $war="'".$$k."'"; break;
      case "check_pass": $wpis="---"; break;
      case "select": $war="'".$$k."'"; break;
      case "obserw": $wpis="---"; break;
     }
     if ($wpis != "---")
     {if ($set != "")
           {$set.=", ";}
      if ($wpis == "")
        {$set.="$pole=".$war;}
      else
        {$set.=$wpis;}
     }
    }
 $tabela = $form[body][table];
 switch ($form_mode)
 {case "new":
      $zap="INSERT INTO $tabela SET $set";
      if (!@mysql_query($zap)) {add_error(mysql_error($sql));}
//      echo("W".$zap."T");
  break;
  case "edit":
      $zap="UPDATE $tabela SET $set WHERE ".$form[body][key]." LIKE '".$form_i."'";
      if (!@mysql_query($zap)) {add_error(mysql_error($sql));}
//        echo($zap);
  break;
  case "del":
      $zap="DELETE FROM $tabela WHERE ".$form[body][key]." LIKE '".$form_i."'";
      if (!@mysql_query($zap)) {add_error(mysql_error($sql));}
//        echo($zap);
  break;
 }


 if ($error_i > 0)
   {$error = @implode ("<br/>", $error);}
 else
   {switch ($form_mode)
     {case "new":  if (($info = $form[body][mess_new]) == false)  {$info = "Dodawanie danych zostało zakończone sukcesem.";}  break;
      case "edit": if (($info = $form[body][mess_edit]) == false) {$info = "Edytowanie danych zostało zakończone sukcesem.";} break;
      case "del":  if (($info = $form[body][mess_del]) == false)  {$info = "Usuwanie danych zostało zakończone sukcesem.";}   break;
     }
   }

 if ($form[body][odswierz_ekran]==true)
   {if ($form_mode == "new") $form_i=pobierz_form_i($form[body][key]);
    header ("Location:?graf=$graf&a=$a&b=$b&c=$c&form_i=$form_i#$form_i");
   }
 if ($form[body][fun] != "")
 {
	eval($form[body][fun]);
 }

}
}
?>
